package com.ruoyi.fileserver.service.impl;

import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.fileserver.domain.SysFile;
import com.ruoyi.fileserver.mapper.SysFileMapper;
import com.ruoyi.fileserver.service.ISysFileService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

/**
 * @描述 文件服务
 * @作者 DL
 * @创建时间 2024-03-26
 * @修改人
 * @修改时间
 */
@Service
public class SysFileServiceImpl implements ISysFileService {

    @Autowired
    private SysFileMapper sysFileMapper;

    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveSysFile(MultipartFile srcFile, File destFile, SysFile sysFile) throws IOException {
        sysFile.setCdate(DateUtils.getNowDate());
        // 1.先保存文件信息到数据库
        sysFileMapper.insert(sysFile);
        // 2.保存文件到磁盘
        srcFile.transferTo(destFile);
    }

    /**
     * 获取文件
     *
     * @param fid
     * @return
     */
    @Override
    public SysFile getSysFile(String fid) {
        SysFile sysFile = sysFileMapper.selectById(fid);
        return sysFile;
    }

    /**
     * 获取文件路径
     *
     * @param fid
     * @return
     */
    @Override
    public String getFilePath(String fid) {
        SysFile sysFile = sysFileMapper.selectById(fid);
        StringBuilder sb = new StringBuilder();
        sb.append(sysFile.getModule() + File.separator + sysFile.getDay() + File.separator + sysFile.getFid() + sysFile.getSuffix());
        return sb.toString();
    }
}
